// 二维01背包问题
// 有 n 个任务需要完成，完成第 i 个任务需要花费 ti 分钟，产生 ci 元的开支。
// 现在有 T 分钟时间，W 元钱来处理这些任务，求最多能完成多少任务。
// 测试链接：https://www.luogu.com.cn/problem/P1855
// 请同学们务必参考如下代码中关于输入、输出的处理
// 这是输入输出处理效率较高的写法
// 提交以下的所有代码，可以直接通过
// 相似题目：
// 一和零：https://leetcode.cn/problems/ones-and-zeroes/

#include <cstdio>
#include <algorithm>

using namespace std;

const int MAXN = 101;
const int MAXM = 201;
int mcost[MAXN];
int tcost[MAXN];
int dp[MAXM][MAXM];
// n : 任务个数
// m : 总钱数
// t : 总时间
int n, m, t;

int read()
{
    char ch = getchar();
    int x = 0, f = 1;
    while (ch < '0' || ch > '9')
    {
        if (ch == '-')
            f = -1;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9')
    {
        x = 10 * x + ch - '0';
        ch = getchar();
    }
    return f * x;
}

int main()
{
    n = read(), m = read(), t = read();
    for(int k = 1; k <= n; ++k)
    {
        mcost[k] = read(), tcost[k] = read();
        for(int i = m; i >= mcost[k]; --i)
        {
            for(int j = t; j >= tcost[k]; --j)
            {
                dp[i][j] = max(dp[i][j], dp[i - mcost[k]][j - tcost[k]] + 1);
            }
        }
    }

    printf("%d\n", dp[m][t]);

    return 0;
}